package com.neusoft.crm.mapper;

import com.neusoft.crm.po.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 统计报表数据层
 *
 * @author bingo
 */
@Mapper
public interface ClientContributionMapper {

    /**
     * 根据状态查找客户信息
     *
     * @param clientInfo 客户信息
     * @return 符合对应状态的客户信息列表
     */
    List<ClientInfo> selectClientInfoByStatus(ClientInfo clientInfo);

    /**
     * 模糊查询客户信息
     *
     * @param clientInfo 客户信息
     * @return 符合要求的客户列表
     */
    List<ClientInfo> selectClientInfoByTag(ClientInfo clientInfo);

    /**
     * 模糊查询流失客户信息
     *
     * @param clientInfo 客户信息
     * @return 符合要求的流失客户信息
     */
    List<ClientInfo> selectLossClientByTag(ClientInfo clientInfo);

    /**
     * 所有地区名称，填充下拉框
     *
     * @return 所有地区信息
     */
    @Select("select * from dataarea")
    List<DataArea> selectAllAreaName();

    /**
     * 所有等级名称，填充下拉框
     *
     * @return 所有等级信息
     */
    @Select("select * from dataclientlevel")
    List<DataClientLevel> selectAllLevelName();

    /**
     * 统计正常状态客户数量
     *
     * @return 所有正常状态客户列表
     */
    @Select("select * from clientinfo where clientState = 1")
    List<ClientInfo> getClientAmount();

    /**
     * 所有服务类型名称，填充下拉框
     *
     * @return 所有服务类型信息
     */
    @Select("select * from dataservertype")
    List<DataServerType> getAllServerType();

    /**
     * 客户服务请求列表
     *
     * @return 所有客户服务请求信息
     */
    @Select("select * from clientserver")
    List<ClientServer> getAllClientServer();

    /**
     * 查找所有客户经理
     *
     * @return 客户经理列表
     */
    @Select("select * from sysUser where userRoleId = 3")
    List<SysUser> getAllClientManager();
}
